/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.raitcon.hibernate.backbean;

import com.raitcon.hibernate.bean.Alumno;
import com.raitcon.hibernate.bean.Asignatura;
import com.raitcon.hibernate.bean.Capacidad;
import com.raitcon.hibernate.bean.CriterioEvaluacion;
import com.raitcon.hibernate.bean.CronogramaEvaluacion;
import com.raitcon.hibernate.bean.Matricula;
import com.raitcon.hibernate.bean.DetalleNota;
import com.raitcon.hibernate.bean.Empleado;
import com.raitcon.hibernate.bean.Grado;
import com.raitcon.hibernate.bean.MatriculaTemp;
import com.raitcon.hibernate.bean.Nota;
import com.raitcon.hibernate.bean.NotaMensualProm;
import com.raitcon.hibernate.bean.Seccion;
import com.raitcon.hibernate.db.AsignaturaDB;
import com.raitcon.hibernate.db.CronogramaEvaluacionDB;
import com.raitcon.hibernate.db.DetalleNotaDB;
import com.raitcon.hibernate.db.MatriculaDB;
import com.raitcon.hibernate.db.NotaDB;
import com.raitcon.hibernate.db.NotaMensualPromDB;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import org.apache.log4j.Logger;
import org.hibernate.annotations.Parent;


/**
 *
 * @author Mike
 */
@ManagedBean(name ="matriculaBean")
@ViewScoped
public class MatriculaBean extends CronogramaEvaluacionBean implements Serializable  {
    
  
  protected static Logger log = Logger.getLogger(MatriculaBean.class); 
  private static  final  long serialVersionUID=-2377612760546575078L; 
  private static final int DECIMALS = 1;
  private static final int CLIENT_ROWS_IN_AJAX_MODE = 15;
  private static final int ROUNDING_MODE = BigDecimal.ROUND_HALF_UP;
  private Long idNota;
  private Integer idMatricula;
  private Alumno alumno;
  private List<MatriculaTemp> matriculaList=new ArrayList<MatriculaTemp>(); 
  private Integer idGrado;
  private Integer idSeccion;
  private Integer idAsignatura ;
  private Integer idAnio;
  private Integer idEmpleado ;
  private Integer idCronEval;
  private int currentMatIndex;
  private MatriculaTemp editMatricula=new MatriculaTemp() ;
  private int page = 1;
  private int clientRows;
  private String mensaje;
  private Integer option=0;//variable para controloar el nueva nota y el actualizar nota.
  private String stateNota="false";
  private Integer numRegTable=0;
  private Integer typeAsignature=1;
  private Integer intMesFinalTrim=0;
  
  @PostConstruct
  public void init(){
     log.info("Running init registro notas");
      super.init();
  }
  
  
  public void switchAjaxLoading(ValueChangeEvent event) {
        this.clientRows = (Boolean) event.getNewValue() ? CLIENT_ROWS_IN_AJAX_MODE : 0;
  
  }
  
  public void actualizar() {
        matriculaList.set(currentMatIndex, editMatricula);
    }

    /**
     * @return the idMatricula
     */
    public Integer getIdMatricula() {
        return idMatricula;
        
    }

    /**
     * @param idMatricula the idMatricula to set
     */
    public void setIdMatricula(Integer idMatricula) {
        this.idMatricula = idMatricula;
    }

    /**
     * @return the alumno
     */
    public Alumno getAlumno() {
        return alumno;
    }

    /**
     * @param alumno the alumno to set
     */
    public void setAlumno(Alumno alumno) {
        this.alumno = alumno;
    }

    /**
     * @return the idGrado
     */
    public Integer getIdGrado() {
        return idGrado;
    }

    /**
     * @param idGrado the idGrado to set
     */
    public void setIdGrado(Integer idGrado) {
        this.idGrado = idGrado;
    }

    /**
     * @return the strIdSeccion
     */
    public Integer getIdSeccion() {
        return idSeccion;
    }

    /**
     * @param strIdSeccion the strIdSeccion to set
     */
    public void setIdSeccion(Integer idSeccion) {
        this.idSeccion = idSeccion;
    }

    /**
     * @return the idAsignatura
     */
    public Integer getIdAsignatura() {
        return idAsignatura;
    }

    /**
     * @param idAsignatura the idAsignatura to set
     */
    public void setIdAsignatura(Integer idAsignatura) {
        this.idAsignatura = idAsignatura;
    }

    /**
     * @return the idAnio
     */
    public Integer getIdAnio() {
        return idAnio;
    }

    /**
     * @param idAnio the idAnio to set
     */
    public void setIdAnio(Integer idAnio) {
        this.idAnio = idAnio;
    }

    /**
     * @return the idEmpleado
     */
    public Integer getIdEmpleado() {
        return idEmpleado;
    }

    /**
     * @param idEmpleado the idEmpleado to set
     */
    public void setIdEmpleado(Integer idEmpleado) {
        this.idEmpleado = idEmpleado;
    }

    /**
     * @return the matriculaList
     */
    public List<MatriculaTemp> getMatriculaList() {
        return matriculaList;
    }

    /**
     * @param matriculaList the matriculaList to set
     */
    public void setMatriculaList(List<MatriculaTemp> matriculaList) {
        this.matriculaList = matriculaList;
    }
    
    public List<MatriculaTemp>matriculaFilter() {
        log.info("Iniciando matriculaBean....");
        List<Matricula>matriculaListTmp=null;
        String  strIdCiclo="1";
        String  strIdGrado="1"; 
        String strIdSeccion="1";
        String strIdArea="1";
        String strIdEmpleado="1";
        String strIdCronEval="1" ;
        String strIdAsignatura="1";
        String strIdAnio="1";
               
       
        try {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            ExternalContext externalContext = facesContext.getExternalContext();

            Map params = externalContext.getRequestParameterMap();
            strIdCiclo = ((String) params.get("idNota:idSelectCiclo"));
            strIdGrado = ((String) params.get("idNota:idSelectGrado"));
            strIdSeccion = ((String) params.get("idNota:idSelectSeccion"));
            strIdArea = ((String) params.get("idNota:idSelectArea"));
            strIdEmpleado = ((String) params.get("idNota:idSelectEmpleado"));
            strIdCronEval = ((String) params.get("idNota:idSelectCronEval"));
            strIdAsignatura = ((String) params.get("idNota:idSelectAsig"));
        } catch (Exception e) {
           log.error("Error al capturar parametro de busqueda de alumonos matriculados:" + e.getMessage());
        }
        log.info("strIdCiclo:" + strIdEmpleado);
        log.info("strIdGrado:" + strIdGrado);
        log.info("strIdSeccion:" + strIdSeccion);
        log.info("strIdArea:" + strIdArea);
        log.info("strIdEmpleado:" + strIdEmpleado);
        log.info("strIdCronEval:" + strIdCronEval);
        log.info("strIdAsignatura:" + strIdAsignatura);
           
        
        MatriculaDB matriculaDB=new MatriculaDB();
        try {
            
          matriculaListTmp= matriculaDB.getMatriculaFilter(strIdSeccion,
                  strIdAnio, strIdGrado, "1");
          matriculaList.clear();
          log.info("Iniciando el recorrido cd....");
          for(Matricula cd: matriculaListTmp){
              MatriculaTemp cedMatri=new MatriculaTemp();
              cedMatri.setMatricula(cd);
              getMatriculaList().add(cedMatri);
          }
          
            
        } catch (Exception e) {
            log.error("Error:al consultar tablaa cedula_Matricula"+e.getMessage());
            e.printStackTrace();
        }
       
      
        
        return matriculaList;
        
    }

    /**
     * @return the currentMatIndex
     */
    public int getCurrentMatIndex() {
        return currentMatIndex;
    }

    /**
     * @param currentMatIndex the currentMatIndex to set
     */
    public void setCurrentMatIndex(int currentMatIndex) {
        this.currentMatIndex = currentMatIndex;
    }

    /**
     * @return the editMatricula
     */
    public MatriculaTemp getEditMatricula() {
        return editMatricula;
    }

    /**
     * @param editMatricula the editMatricula to set
     */
    public void setEditMatricula(MatriculaTemp editMatricula) {
        this.editMatricula = editMatricula;
    }

    /**
     * @return the page
     */
    public int getPage() {
        return page;
    }

    /**
     * @param page the page to set
     */
    public void setPage(int page) {
        this.page = page;
    }

    /**
     * @return the clientRows
     */
    public int getClientRows() {
        return clientRows;
    }

    /**
     * @param clientRows the clientRows to set
     */
    public void setClientRows(int clientRows) {
        this.clientRows = clientRows;
    }
    
    
    public void newOrSaveNota() {
        
        Nota notaFind=findNotaId();
        
       
      if(!(notaFind!=null  && getOption()==0)) {
           
        
        String result = "";
        Nota nota = new Nota();
        
        nota.setFechaRegistro(new Date());
        log.info("idAsignatura::"+getIdAsignatura());
        nota.setAsignatura(new Asignatura(getIdAsignatura()));
        nota.setEmpleado(new Empleado(getIdEmpleado()));
        nota.setGrado(new Grado(getIdGrado()));
        nota.setSeccion(new Seccion(getIdSeccion()));
        nota.setCronogramaEvaluacion(new CronogramaEvaluacion(getIdCronEval()));
        List<DetalleNota> dtListNota=new ArrayList<DetalleNota>();
        //Recorremos la lista de cedula matricula
        for(MatriculaTemp cd : matriculaList ){
            log.info("cd:Nota1:"+cd.getDblNota1());
            DetalleNota dtNota1=new DetalleNota();
            dtNota1.setIdNotaDetalle(cd.getIdNota1()!=null?cd.getIdNota1():0);
            dtNota1.setCalificacion(BigDecimal.valueOf(cd.getDblNota1()!=null?cd.getDblNota1():-1));
            dtNota1.setCapacidad(new Capacidad(1));
            dtNota1.setAlumno(cd.getMatricula().getAlumno());
            dtNota1.setCodCriterioEvaluacion(new CriterioEvaluacion("N1"));
            dtListNota.add(dtNota1);
            DetalleNota dtNota2=new DetalleNota();
            dtNota2.setIdNotaDetalle(cd.getIdNota2()!=null?cd.getIdNota2():0);
            dtNota2.setCalificacion(BigDecimal.valueOf(cd.getDblNota2()!=null?cd.getDblNota2():-1));
            dtNota2.setCapacidad(new Capacidad(1));
            dtNota2.setAlumno(cd.getMatricula().getAlumno());
            dtNota2.setCodCriterioEvaluacion(new CriterioEvaluacion("N2"));
            dtListNota.add(dtNota2);
            
            DetalleNota dtNota3=new DetalleNota();
            dtNota3.setIdNotaDetalle(cd.getIdNota3()!=null?cd.getIdNota3():0);
            dtNota3.setCalificacion(BigDecimal.valueOf(cd.getDblNota3()!=null?cd.getDblNota3():-1));
            dtNota3.setCapacidad(new Capacidad(1));
            dtNota3.setAlumno(cd.getMatricula().getAlumno());
            dtNota3.setCodCriterioEvaluacion(new CriterioEvaluacion("EXA"));
            dtListNota.add(dtNota3);
            
            DetalleNota dtNota5=new DetalleNota();
            dtNota5.setIdNotaDetalle(cd.getIdNota5()!=null?cd.getIdNota5():0);
            dtNota5.setCalificacion(BigDecimal.valueOf(cd.getDblNota5()!=null?cd.getDblNota5():-1));
            dtNota5.setCapacidad(new Capacidad(2));
            dtNota5.setAlumno(cd.getMatricula().getAlumno());
            dtNota5.setCodCriterioEvaluacion(new CriterioEvaluacion("N1"));
            dtListNota.add(dtNota5);
            
            DetalleNota dtNota6=new DetalleNota();
            dtNota6.setIdNotaDetalle(cd.getIdNota6()!=null?cd.getIdNota6():0);
            dtNota6.setCalificacion(BigDecimal.valueOf(cd.getDblNota6()!=null?cd.getDblNota6():-1));
            dtNota6.setCapacidad(new Capacidad(2));
            dtNota6.setAlumno(cd.getMatricula().getAlumno());
            dtNota6.setCodCriterioEvaluacion(new CriterioEvaluacion("N2"));
            dtListNota.add(dtNota6);
            
            DetalleNota dtNota7=new DetalleNota();
            dtNota7.setIdNotaDetalle(cd.getIdNota7()!=null?cd.getIdNota7():0);
            dtNota7.setCalificacion(BigDecimal.valueOf(cd.getDblNota7()!=null?cd.getDblNota7():-1));
            dtNota7.setCapacidad(new Capacidad(2));
            dtNota7.setAlumno(cd.getMatricula().getAlumno());
            dtNota7.setCodCriterioEvaluacion(new CriterioEvaluacion("EXA"));
            dtListNota.add(dtNota7);
            
            DetalleNota dtNota9=new DetalleNota();
            dtNota9.setIdNotaDetalle(cd.getIdNota9()!=null?cd.getIdNota9():0);
            dtNota9.setCalificacion(BigDecimal.valueOf(cd.getDblNota9()!=null?cd.getDblNota9():-1));
            dtNota9.setCapacidad(new Capacidad(3));
            dtNota9.setAlumno(cd.getMatricula().getAlumno());
            dtNota9.setCodCriterioEvaluacion(new CriterioEvaluacion("N1"));
            dtListNota.add(dtNota9);

            DetalleNota dtNotaDiez=new DetalleNota();
            dtNotaDiez.setIdNotaDetalle(cd.getIdNotaDiez()!=null?cd.getIdNotaDiez():0);
            dtNotaDiez.setCalificacion(BigDecimal.valueOf(cd.getDblNotaDiez()!=null?cd.getDblNotaDiez():-1));
            dtNotaDiez.setCapacidad(new Capacidad(3));
            dtNotaDiez.setAlumno(cd.getMatricula().getAlumno());
            dtNotaDiez.setCodCriterioEvaluacion(new CriterioEvaluacion("N2"));
            dtListNota.add(dtNotaDiez);

            DetalleNota dtNotaOnce=new DetalleNota();
            dtNotaOnce.setIdNotaDetalle(cd.getIdNotaOnce()!=null?cd.getIdNotaOnce():0);
            dtNotaOnce.setCalificacion(BigDecimal.valueOf(cd.getDblNotaOnce()!=null?cd.getDblNotaOnce():-1));
            dtNotaOnce.setCapacidad(new Capacidad(3));
            dtNotaOnce.setAlumno(cd.getMatricula().getAlumno());
            dtNotaOnce.setCodCriterioEvaluacion(new CriterioEvaluacion("EXA"));
            dtListNota.add(dtNotaOnce);
                
            DetalleNota dtNotaTrece=new DetalleNota();
            dtNotaTrece.setIdNotaDetalle(cd.getIdNotaTrece()!=null?cd.getIdNotaTrece():0);
            dtNotaTrece.setCalificacion(BigDecimal.valueOf(cd.getDblNotaTrece()!=null?cd.getDblNotaTrece():-1));
            dtNotaTrece.setCapacidad(new Capacidad(4));
            dtNotaTrece.setAlumno(cd.getMatricula().getAlumno());
            dtNotaTrece.setCodCriterioEvaluacion(new CriterioEvaluacion("N1"));
            dtListNota.add(dtNotaTrece);

            DetalleNota dtNotaCatorce=new DetalleNota();
            dtNotaCatorce.setIdNotaDetalle(cd.getIdNotaCatorce()!=null?cd.getIdNotaCatorce():0);
            dtNotaCatorce.setCalificacion(BigDecimal.valueOf(cd.getDblNotaCatorce()!=null?cd.getDblNotaCatorce():-1));
            dtNotaCatorce.setCapacidad(new Capacidad(4));
            dtNotaCatorce.setAlumno(cd.getMatricula().getAlumno());
            dtNotaCatorce.setCodCriterioEvaluacion(new CriterioEvaluacion("N2"));
            dtListNota.add(dtNotaCatorce);

            DetalleNota dtNotaQuince=new DetalleNota();
            dtNotaQuince.setIdNotaDetalle(cd.getIdNotaQuince()!=null?cd.getIdNotaQuince():0);
            dtNotaQuince.setCalificacion(BigDecimal.valueOf(cd.getDblNotaQuince()!=null?cd.getDblNotaQuince():-1));
            dtNotaQuince.setCapacidad(new Capacidad(4));
            dtNotaQuince.setAlumno(cd.getMatricula().getAlumno());
            dtNotaQuince.setCodCriterioEvaluacion(new CriterioEvaluacion("EXA"));
            dtListNota.add(dtNotaQuince);
            
            }

            log.info("Iniciando registro notas: ");

            //ProfesorDB proDB = new ProfesorDB();

            NotaDB notaDB=new NotaDB();
            String msg="";
            msg=  notaDB.insertOrUpdateNota(nota, dtListNota,getOption(),notaFind,
                    matriculaList,idAsignatura,idCronEval, typeAsignature);
            setMensaje("Se guarda nota");
            log.info("Se guarda nota");
            
           /* if(getOption()==0){
              msg=  notaDB.insertOrUpdateNota(nota, dtListNota,getOption());
            setMensaje("Se guarda nota");
                System.out.println("Se guarda nota");
            }
            else{
                nota.setIdNota(getIdNota());
                setMensaje("Se intenta actualizar id:"+getIdNota());
                System.out.println("Se intenta actualizar id:"+getIdNota());
            }*/
           // setMensaje("Se realizó exitosamente la transacción");
        if (!msg.equals("")) {
            mensaje = msg;
        } else {
           mensaje = "Se Generó errores al intentar guardar nota";
        }
         }
      
        else{
           setMensaje("Notas ya se encuentra registrado con parámetros ingresados");
           
      }
     
    }

    /**
     * @return the mensaje
     */
    public String getMensaje() {
        return mensaje;
    }

    /**
     * @param mensaje the mensaje to set
     */
    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    /**
     * @return the idCronEval
     */
    public Integer getIdCronEval() {
        return idCronEval;
    }

    /**
     * @param idCronEval the idCronEval to set
     */
    public void setIdCronEval(Integer idCronEval) {
        this.idCronEval = idCronEval;
    }

    /**
     * @return the option
     */
    public Integer getOption() {
        return option;
    }

    /**
     * @param option the option to set
     */
    public void setOption(Integer option) {
        this.option = option;
    }
    
    
    public void optionUpdate(){
        
       setOption(1);
       setStateNota("true");
       //setMensaje("getOption::"+getOption());
       log.info("getOption::"+getOption());
    }
    
    
    
      public void findNota() {
          try {
              
         
          matriculaList.clear();
          setStateNota("false");
          String result = "";
          Nota nota = null;
          
         // nota.setFechaRegistro(new Date());
         nota=findNotaId();
         setIdNota(nota.getIdNota());
         log.info("Buscando nota id:"+nota.getIdNota());
          DetalleNotaDB  detalleNotaDB=new DetalleNotaDB();
          NotaMensualPromDB  notaMensualPromDB=new NotaMensualPromDB();
          List<DetalleNota> detalleNotaList=detalleNotaDB.getDetalleNotaFilter(nota.getIdNota());
          List<NotaMensualProm> notaMensualPromList=
                  notaMensualPromDB.getNotaPromedioMensualFilter(nota.getIdNota());
          
         /*for(DetalleNota dt:detalleNotaList){
             System.out.println("det::"+dt.getCalificacion());
         } */
          int i=0;
          int intContProm=0; //contador de notas ET
          while(i<detalleNotaList.size()){
                  DetalleNota dt=(DetalleNota)detalleNotaList.get(i);
                  int j=1;
                  
                  MatriculaTemp matTmp=new MatriculaTemp();
                  Matricula matricula=new Matricula();
                  matricula.setAlumno(dt.getAlumno());
                 
                  while((i<detalleNotaList.size()) && dt.getAlumno().equals(((DetalleNota)detalleNotaList.get(i)).getAlumno())){
                      DetalleNota dtTemp=(DetalleNota)detalleNotaList.get(i);
                      System.out.println("det::"+dtTemp.getCalificacion());
                      if(j==1){
                           matTmp.setIdNota1(dtTemp.getIdNotaDetalle());
                           matTmp.setDblNota1(dtTemp.getCalificacion().longValue());
                      }
                      if(j==2){
                           matTmp.setIdNota2(dtTemp.getIdNotaDetalle());
                           matTmp.setDblNota2(dtTemp.getCalificacion().longValue());
                      }
                      if(j==3){
                          matTmp.setIdNota3(dtTemp.getIdNotaDetalle());
                         matTmp.setDblNota3(dtTemp.getCalificacion().longValue());
                      }
                      if(j==4){
                          
                         matTmp.setIdNota5(dtTemp.getIdNotaDetalle());
                         matTmp.setDblNota5(dtTemp.getCalificacion().longValue());
                      }
                      if(j==5){
                         matTmp.setIdNota6(dtTemp.getIdNotaDetalle());
                         matTmp.setDblNota6(dtTemp.getCalificacion().longValue());  
                      }
                      if(j==6){
                         matTmp.setIdNota7(dtTemp.getIdNotaDetalle()); 
                         matTmp.setDblNota7(dtTemp.getCalificacion().longValue());  
                      }
                      if(j==7){
                         matTmp.setIdNota9(dtTemp.getIdNotaDetalle()); 
                         matTmp.setDblNota9(dtTemp.getCalificacion().longValue());   
                      }
                      if(j==8){
                         matTmp.setIdNotaDiez(dtTemp.getIdNotaDetalle()); 
                         matTmp.setDblNotaDiez(dtTemp.getCalificacion().longValue());  
                      }
                      if(j==9){
                         matTmp.setIdNotaOnce(dtTemp.getIdNotaDetalle());
                         matTmp.setDblNotaOnce(dtTemp.getCalificacion().longValue());  
                      }
                      if(j==10){
                         matTmp.setIdNotaTrece(dtTemp.getIdNotaDetalle()); 
                         matTmp.setDblNotaTrece(dtTemp.getCalificacion().longValue());  
                      }
                      if(j==11){
                         matTmp.setIdNotaCatorce(dtTemp.getIdNotaDetalle()); 
                         matTmp.setDblNotaCatorce(dtTemp.getCalificacion().longValue()); 
                      }
                      if(j==12){
                         matTmp.setIdNotaQuince(dtTemp.getIdNotaDetalle()); 
                         matTmp.setDblNotaQuince(dtTemp.getCalificacion().longValue());   
                      }
                      
                      i++;
                      j++;
                  }
                  //System.out.println("Nota ET-C1:"+notaMensualPromList.get(intContProm).getPromC1());
                   matTmp.setIdNotaMensualProm(notaMensualPromList.get(intContProm).getIdNotaMensualProm());
                   matTmp.setEtC1(notaMensualPromList.get(intContProm).getEtC1()!=null?notaMensualPromList.get(intContProm).getEtC2().longValue():0);
                   matTmp.setEtC2(notaMensualPromList.get(intContProm).getEtC1()!=null?notaMensualPromList.get(intContProm).getEtC2().longValue():0);
                   matTmp.setEtC3(notaMensualPromList.get(intContProm).getEtC3()!=null?notaMensualPromList.get(intContProm).getEtC3().longValue():0);
                   matTmp.setMatricula(matricula);
                  this.getMatriculaList().add(matTmp);
                  intContProm++;
          }
       
          if(matriculaList!=null && matriculaList.size()>0){
                 log.info("Numero de alumnos::"+matriculaList.size());
                setNumRegTable(matriculaList.size());
            }
          setOption(1);//opcion para actualizar nota.
          this.mensaje="";
            // create a script engine manager
         // ScriptEngineManager factory = new ScriptEngineManager();
          // ScriptEngine engine =factory.getEngineByName("Test");
         //  engine.eval("response.write('Hello, World')");
          /* try {
                ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
                HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
                PrintWriter pw = response.getWriter();
                pw.write("");
                pw.write("<h2>Hello World</h2>");
                pw.write("");
                FacesContext.getCurrentInstance().responseComplete();  
           } catch (IOException e) {
                FacesContext.getCurrentInstance().addMessage(
                  "helloWorldButtonId",
                  new FacesMessage("Error:" + e.getMessage())
                );
           }*/
           } catch (Exception e) {
               this.mensaje="No existe notas registrado para los criterios de busqueda.";
          }
      
    }
      
      
      public Nota findNotaId(){
          // nota.setFechaRegistro(new Date());
        System.out.println("Buscando nota Id...");
        Nota nota=null;
        FacesContext facesContext = FacesContext.getCurrentInstance();
            ExternalContext externalContext = facesContext.getExternalContext();

            Map params = externalContext.getRequestParameterMap();
            idSeccion = Integer.parseInt((String) params.get("idNota:idSelectSeccion"));
            idGrado = Integer.parseInt((String) params.get("idNota:idSelectGrado"));
            idEmpleado =Integer.parseInt( (String) params.get("idNota:idSelectEmpleado"));
            idCronEval = Integer.parseInt((String) params.get("idNota:idSelectCronEval"));
            idAsignatura = Integer.parseInt((String) params.get("idNota:idSelectAsig"));
        //Consultamos  NotaDB para obtener id nota:
        NotaDB notaDB=new NotaDB();
        nota= notaDB.findNota(getIdCronEval(),getIdAsignatura(),getIdEmpleado(),
                getIdGrado(),getIdSeccion());
        return nota;
      }
      
      
      public void optionAsignature(){
          
           FacesContext facesContext = FacesContext.getCurrentInstance();
           ExternalContext externalContext = facesContext.getExternalContext();
            Map params = externalContext.getRequestParameterMap();
            idAsignatura = Integer.parseInt((String) params.get("idNota:idSelectAsig"));
          log.info("getIdAsignatura()::"+getIdAsignatura());
          AsignaturaDB asignaturaDB=new AsignaturaDB();
          Integer idType=asignaturaDB.asignaturaById(getIdAsignatura());
          log.info( "idType:"+idType);
          typeAsignature=idType;
          this.matriculaList.clear();
      }
     
      public void clearTable(){
          if(matriculaList!=null && matriculaList.size()>0)
             this.matriculaList.clear();
           this.mensaje="";
      }


    /**
     * @return the idNota
     */
    public Long getIdNota() {
        return idNota;
    }

    /**
     * @param idNota the idNota to set
     */
    public void setIdNota(Long idNota) {
        this.idNota = idNota;
    }

    /**
     * @return the stateNota
     */
    public String getStateNota() {
        return stateNota;
    }

    /**
     * @param stateNota the stateNota to set
     */
    public void setStateNota(String stateNota) {
        this.stateNota = stateNota;
    }

    /**
     * @return the numRegTable
     */
    public Integer getNumRegTable() {
        return numRegTable;
    }

    /**
     * @param numRegTable the numRegTable to set
     */
    public void setNumRegTable(Integer numRegTable) {
        this.numRegTable = numRegTable;
    }

    /**
     * @return the typeAsignature
     */
    public Integer getTypeAsignature() {
        return typeAsignature;
    }

    /**
     * @param typeAsignature the typeAsignature to set
     */
    public void setTypeAsignature(Integer typeAsignature) {
        this.typeAsignature = typeAsignature;
    }

    /**
     * @return the intMesFinalTrim
     */
    public Integer getIntMesFinalTrim() {
        return intMesFinalTrim;
    }

    /**
     * @param intMesFinalTrim the intMesFinalTrim to set
     */
    public void setIntMesFinalTrim(Integer intMesFinalTrim) {
        this.intMesFinalTrim = intMesFinalTrim;
    }
    
   @Override
    public void valueChanged(ValueChangeEvent event) {
        if (null != event.getNewValue()) {
           // String[] currentItems;
            String codCronogramaEval=(Integer)event.getNewValue()+"";
            
            CronogramaEvaluacionDB CronogramaEvalDB=new CronogramaEvaluacionDB();
            CronogramaEvaluacion cronEval=null;
            cronEval=CronogramaEvalDB.getCronogramaEvaluacionById(codCronogramaEval);
            
            setCronogramaEvualacion(cronEval);
            if(cronEval.getMes().getIdMes()==6 || cronEval.getMes().getIdMes()==9 || cronEval.getMes().getIdMes()==12)
                setIntMesFinalTrim(Integer.valueOf(1+""));
            else
                setIntMesFinalTrim(Integer.valueOf(0+""));
            
            this.matriculaList.clear();
            setOption(0);
            this.mensaje="";
            log.info("getIntMesFinalTrim:"+getIntMesFinalTrim());
        
         }

   }

}
